#!/bin/bash

# 定义输出文件名
output_file="sword_result.txt"

# 清空输出文件
> $output_file

# 获取服务器本地 IP 地址信息 
echo "获取服务器本地 IP 地址信息:" >> $output_file
ip addr show | grep -w inet | awk '{print $2}' >> $output_file
echo "" >> $output_file

# 获取服务器互联网出口 IP 信息 
echo "获取服务器互联网出口 IP 信息:" >> $output_file
curl -s https://myip.ipip.net >> $output_file
echo "" >> $output_file

# 获取磁盘整体使用信息
echo "获取磁盘整体使用信息:" >> $output_file
df -h >> $output_file
echo "" >> $output_file

# 获取CPU占用前10的进程信息
echo "获取CPU占用前10的进程信息:" >> $output_file
ps -aux | sort -nr -k 3 | head -10 >> $output_file
echo "" >> $output_file

# 获取内存整体使用信息
echo "获取内存整体使用信息:" >> $output_file
free -m >> $output_file
echo "" >> $output_file

# 获取内存占用前 10 的进程信息
echo "获取内存占用前 10 的进程信息:" >> $output_file
ps -aux | sort -nr -k 4 | head -10 >> $output_file
echo "" >> $output_file

# 获取内核版本信息
echo "获取内核版本信息:" >> $output_file
uname -a >> $output_file
echo "" >> $output_file

# 获取系统版本信息
echo "获取系统版本信息:" >> $output_file
cat /etc/*-release >> $output_file
echo "" >> $output_file

# 获取 ARP 表信息
echo "获取 ARP 表信息:" >> $output_file
arp -a -n >> $output_file
echo "" >> $output_file

# 获取网络路由信息
echo "获取网络路由信息:" >> $output_file
route -n >> $output_file
echo "" >> $output_file

# 获取网络 DNS 信息
echo "获取网络 DNS 信息:" >> $output_file
cat /etc/resolv.conf | grep ^nameserver >> $output_file
echo "" >> $output_file

# 获取 TCP 网络连接信息
echo "获取 TCP 网络连接信息:" >> $output_file
netstat -antlp >> $output_file
echo "" >> $output_file

# 获取 UDP 网络连接信息
echo "获取 UDP 网络连接信息:" >> $output_file
netstat -anlpu >> $output_file
echo "" >> $output_file

# 获取端口对外开放信息
echo "获取端口对外开放信息:" >> $output_file
netstat -tulpen | awk '{print $1,$4}' >> $output_file
echo "" >> $output_file

# 获取防火墙策略信息
echo "获取防火墙策略信息:" >> $output_file
firewall-cmd --list-all 2>&1 >> $output_file
echo "" >> $output_file

# 获取进程信息
echo "获取进程信息:" >> $output_file
ps -aux >> $output_file
echo "" >> $output_file

# 获取系统自启动项信息
echo "获取系统自启动项信息:" >> $output_file
systemctl list-unit-files | grep enabled | awk '{print $1}' >> $output_file
echo "" >> $output_file

# 获取系统定时任务信息
echo "获取系统定时任务信息:" >> $output_file
cat /etc/crontab >> $output_file
echo "" >> $output_file

# 获取用户定时任务信息
echo "获取用户定时任务信息:" >> $output_file
crontab -l 2>&1 >> $output_file
echo "" >> $output_file

# 获取系统服务信息
echo "获取系统服务信息:" >> $output_file
systemctl | grep -E "\.service.*running" | awk -F. '{print $1}' >> $output_file
echo "" >> $output_file

# 获取 hosts 文件信息
echo "获取 hosts 文件信息:" >> $output_file
cat /etc/hosts >> $output_file
echo "" >> $output_file

# 获取公钥文件信息
echo "获取公钥文件信息:" >> $output_file
# 检查是否存在公钥文件，并将输出和错误信息都写入文件
if [ "$(ls -A /root/.ssh/*.pub 2>/dev/null)" ]; then
        cat /root/.ssh/*.pub 2>&1 >> $output_file
else
        echo "No public keys found." >> $output_file
fi
echo "" >> $output_file

# 获取私钥文件信息
echo "获取私钥文件信息:" >> $output_file
# 检查是否存在公钥文件，并将输出和错误信息都写入文件
if [ "$(ls -A /root/.ssh/id_rsa 2>/dev/null)" ]; then
        cat /root/.ssh/id_rsa 2>&1 >> $output_file
else
        echo "No Private Keys found." >> $output_file
fi
echo "" >> $output_file

# 获取 authorized_keys 文件信息
echo "获取 authorized_keys 文件信息:" >> $output_file
if [ "$(ls -A /root/.ssh/authorized_keys 2>/dev/null)" ]; then
        cat /root/.ssh/authorized_keys 2>&1 >> $output_file
else
        echo "No authorized_keys found." >> $output_file
fi
echo "" >> $output_file

# 获取 known_hosts 文件信息
echo "获取 known_hosts 文件信息:" >> $output_file
if [ "$(ls -A /root/.ssh/known_hosts 2>/dev/null)" ]; then
        cat /root/.ssh/known_hosts 2>&1 >> $output_file
else
        echo "No known_hosts found." >> $output_file
fi
echo "" >> $output_file

# 获取临时文件夹目录信息
echo "获取临时文件夹目录信息:" >> $output_file
ls -alt /tmp >> $output_file
echo "" >> $output_file

# 获取 root 目录下隐藏文件信息
echo "获取 root 目录下隐藏文件信息:" >> $output_file
ls -alt /root >> $output_file
echo "" >> $output_file

# 查看用户信息
echo "查看用户信息:" >> $output_file
cat /etc/passwd >> $output_file
echo "" >> $output_file

# 获取有登录权限的用户
echo "获取有登录权限的用户:" >> $output_file
cat /etc/passwd | grep -v nologin >> $output_file
echo "" >> $output_file

# 获取 shadow 文件信息
echo "获取 shadow 文件信息:" >> $output_file
cat /etc/shadow >> $output_file
echo "" >> $output_file

# 获取 ssh 空密码信息
echo "获取 ssh 空密码信息:" >> $output_file
cat /etc/ssh/sshd_config | grep -w "PermitEmptyPasswords" >> $output_file
echo "" >> $output_file

# 获取用户组信息
echo "获取用户组信息:" >> $output_file
cat /etc/group >> $output_file
echo "" >> $output_file

# 获取历史命令信息bash_history
echo "获取历史命令信息bash_history:" >> $output_file
cat /root/.bash_history >> $output_file
echo "" >> $output_file

# 获取历史命令信息history
echo "获取历史命令信息history:" >> $output_file
history >> $output_file
echo "" >> $output_file

# 获取数据库操作信息
echo "获取数据库操作信息:" >> $output_file
if [ "$(ls -A /root/.mysql_history 2>/dev/null)" ]; then
        cat /root/.mysql_history 2>&1 >> $output_file
else
        echo "No mysql_history found." >> $output_file
fi
echo "" >> $output_file

# 获取日志存在情况信息
echo "获取日志存在情况信息:" >> $output_file
ls -l /var/log/ >> $output_file
echo "" >> $output_file

# 获取当前用户登录信息
echo "获取当前用户登录信息:" >> $output_file
who >> $output_file
echo "" >> $output_file

# 获取最后用户登录信息
echo "获取最后用户登录信息:" >> $output_file
last >> $output_file
echo "" >> $output_file

# 取用户最后一次登录日志信获息
echo "取用户最后一次登录日志信获息:" >> $output_file
lastlog | grep -v "Never" >> $output_file
echo "" >> $output_file

# 获取新增用户日志信息
echo "获取新增用户日志信息:" >> $output_file
cat /var/log/secure* | grep "new user" >> $output_file
echo "" >> $output_file

# 获取新增用户组日志信息
echo "获取新增用户组日志信息:" >> $output_file
cat /var/log/secure* | grep "new group" >> $output_file
echo "" >> $output_file

# 获取错误登录日志信息
echo "获取错误登录日志信息:" >> $output_file
lastb >> $output_file
echo "" >> $output_file

# 获取登录成功的信息
echo "获取登录成功的信息:" >> $output_file
cat /var/log/secure* | grep "Accepted password" | awk '{print $1,$2,$3,$9,$11}' >> $output_file
echo "" >> $output_file

# 获取登录失败的信息
echo "获取登录失败的信息:" >> $output_file
cat /var/log/secure* | grep "Failed password" | awk '{print $1,$2,$3,$9,$11}' >> $output_file
echo "" >> $output_file

# 获取登录失败的 IP 次数信息
echo "获取登录失败的 IP 次数信息:" >> $output_file
grep "Failed password" /var/log/secure* | awk '{print $11}' | sort -nr | uniq -c >> $output_file
echo "" >> $output_file

# 获取登录失败的用户次数信息
echo "获取登录失败的用户次数信息:" >> $output_file
grep "Failed password" /var/log/secure* | awk '{print $9}' | sort -nr | uniq -c >> $output_file
echo "" >> $output_file

# 获取使用 DNS 服务器的情况信息
echo "获取使用 DNS 服务器的情况信息:" >> $output_file
cat /var/log/messages* | grep "using nameserver" >> $output_file
echo "" >> $output_file

# 获取 yum 安装日志信息
echo "获取 yum 安装日志信息:" >> $output_file
cat /var/log/yum* | grep Installed >> $output_file
echo "" >> $output_file

# 获取 yum 卸载日志信息
echo "获取 yum 卸载日志信息:" >> $output_file
cat /var/log/yum* | grep Erased >> $output_file
echo "" >> $output_file

# 输出完成信息
echo "全部信息已经被保存到 $output_file."